# 文件操作
"""
open(文件名,mode,encoding)
文件名：相对路径或绝对路径
mode:打开的模式，有以下几种
r   读文件
rb  读文件     读字节
w   写文件     文件不存在则创建文件，并且覆盖内容
a   写文件     追加内容
"""
# 读文件并手动关闭
def read_file(file_path, read_type):
    """
    :param file_path: 文件路径
    :param read_type: r 读字符文件  rb  读字节文件
    """
    print("-" * 50, "读文件，手动关闭文件", "-" * 50)
    try:
        # 打开文件
        file = open(file_path, read_type, encoding="utf-8")
        # for循环一行一行的读取
        for line in file:
            print(line, end="")
        print()
    except:
        print("异常")
    finally:
        # 关闭文件
        print("关闭文件")
        file.close()
# 读指定大小的文件并手动关闭
def read_file_size(file_path, read_type, size = 1024):
    """
    :param file_path: 文件路径
    :param read_type: r 读字符文件  rb  读字节文件
    :param size: 读取文件的大小，默认1024个字符或字节
    :return:
    """
    print("-" * 50, "读指定大小的文件，手动关闭文件", "-" * 50)
    try:
        # 打开文件
        file = open(file_path, read_type, encoding="utf-8")
        # 读取文件：如果不给参数就是读取全部内容
        print(file.read(size))
    except:
        print("异常")
    finally:
        # 关闭文件
        print("关闭文件")
        file.close()
# 读一行文本文件并手动关闭
def read_file_line(file_path, read_type):
    """
    :param file_path: 文件路径
    :param read_type: r 读字符文件  rb  读字节文件
    :return:
    """
    print("-" * 50, "读一行文本文件,手动关闭", "-" * 50)
    try:
        # 打开文件
        file = open(file_path, read_type, encoding="utf-8")
        # 读取文件的全部行并封装到列表
        lines = file.readlines()
        # for循环一行一行的读取
        for line in lines:
            print(line, end="")
    except:
        print("异常")
    finally:
        # 关闭文件
        print("关闭文件")
        file.close()
# 读文件，自动关闭
def read_line_auto_close_file(file_path, read_type):
    with open(file_path, read_type, encoding="utf-8") as file:
        lines = file.readlines()
        # for循环一行一行的读取
        for line in lines:
            print(line, end="")
    print("读取完毕")
# 写文件
def write_file(write_type):
    if write_type == "w":
        write_type_str = "覆盖内容"
    else:
        write_type_str = "追加内容"
    print("-" * 50, f"写文件，{write_type_str}", "-" * 50)
    # 文件的写：如果文件不存在会创建文件
    # 参数：w，如果文件存在会先清空原有内容
    # 参数：a，如果文件存在会在后面追加内容
    file = open("C:/Users/Administrator/Desktop/python测试创建文件夹/文件写测试.txt", write_type, encoding="utf-8")
    str1 = "print(‘嫣然'，'女'，'20岁')\n"
    file.write(str1)
    # flush的作用是 执行write时并不是真正的写入内存中，而是写入缓存区，flush后就一次性写入内存中
    file.flush()
    # 文件关闭 close是自带flush功能的
    file.close()
    print(f"写入完毕，{write_type}模式")
if __name__ == '__main__':
    file_path = "C:/Users/Administrator/Desktop/python测试创建文件夹/字典说明.txt"
    write_file("a")
